package com.g2room.myuall.grap.univ;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang3.StringUtils;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import com.g2room.myuall.grap.univ.po.UnivEnro;
import com.g2room.myuall.util.DbUtil;

public class GrapEolEnrollment implements Runnable {
	static String baseUrl = "http://www.gkcx.eol.cn";
	private Connection conn = DbUtil.getConn(); 
	
	public static void main(String[] args) {
//		for(int i =0; i< 20; i++) {
			GrapEolEnrollment gue = new GrapEolEnrollment();
//			Thread thread = new Thread(gue);
//			thread.start();
//		}
		
		Map<String, Integer> errs = gue.getErrs();
		for(String url : errs.keySet()) {
//			http://gkcx.eol.cn/schoolhtm/schoolInfo/487/10071/476988.htm_sid=487_t=2	4
//			http://gkcx.eol.cn/schoolhtm/schoolInfo/3211/10071/list_1.htm	6
//			http://gkcx.eol.cn/schoolhtm/schoolInfo/133/10071/list_2.htm_sid=133_t=2	7
			String[] urls = null;
			switch(errs.get(url)) {
				case 4:
//					http://gkcx.eol.cn/schoolhtm/schoolInfo/487/10071/476988.htm_sid=487_t=2
					urls = url.split("_");
					
					UnivEnro ue = new UnivEnro();
					ue.setSourceUrl(urls[0]);
					ue.setSchoolId(Integer.valueOf(urls[1].replace("sid=", "")));
					ue.setType(Integer.valueOf(urls[2].replace("t=", "")));
					gue.getDetail(ue);
					break;
				case 6:
				case 7:
					// http://gkcx.eol.cn/schoolhtm/schoolInfo/3211/10071/list_1.htm
					urls = url.split("/");
					String sid = urls[5];
					String type = urls[6];
					int t = type.equals("10071") ? 2 : 1;
					gue.getPage(sid, url, t);
					break;
			}
		}
	}
	public void getPage(String sid, String url, int type) {
		Document doc = null;
		List<String> urls = new ArrayList<String>();
		try {
			doc = new GenericMyuall().getDoc(url);
			Element resultEl = doc.getElementsByAttributeValue("class", "S_result").first();
			Elements pageEls = resultEl.getElementsByAttributeValue("class", "pageBox");
			if(null != pageEls && pageEls.size() > 0) {
				Element pageEl = pageEls.first();
				// 获取最后分页
				Elements aels = pageEl.getElementsByTag("a");
				if(aels.size() > 5) {
					// 获取倒数第三个 TODO
					Element el = aels.get(aels.size() - 3);
					String pageNumText = el.text();
					int pageNum = Integer.valueOf(pageNumText.replace("[", "").replace("]", ""));
					for(int i =1; i< pageNum+1; i++) {
						urls.add(url.replace("_1.htm", "_"+i+".htm"));
					}
				}
			} else {
				urls.add(url);
			}
			
		} catch (Exception e1) {
			System.out.println(e1.getMessage());
			System.out.println(6 + "____" + url);
			if(!e1.getMessage().contains("NullPointerException")) {
				insert2ErrDb(url, 6);
			}
			return;
		}
		for(String listUrl : urls) {
			getList(sid, listUrl, type);
		}
	}
	
	// 获取专业数据
	private void getList(String sid, String listUrl,int type) {
		Document doc = null;
		try {
			doc = new GenericMyuall().getDoc(listUrl);
		} catch (Exception e1) {
			e1.printStackTrace();
			insert2ErrDb(listUrl, 6);
			return;
		}
		List<UnivEnro> ues = new ArrayList<UnivEnro>();
		try {
			Elements liEls = doc.getElementsByAttributeValue("class", "S_result").first().getElementsByTag("li");
			for(Element el : liEls) {
				Element titleEl = el.getElementsByTag("a").first();
				UnivEnro ue = new UnivEnro();
				ue.setSchoolId(Integer.valueOf(sid));
				ue.setTitle(titleEl.text());
				ue.setSourceUrl("http://gkcx.eol.cn"+titleEl.attr("href"));
				ue.setType(type);
				ue.setPublishTime(el.getElementsByTag("span").first().text());
				ues.add(ue);
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
			System.out.println(7 + "____" + listUrl + "_sid=" + sid + "_t=" + type);
			if(!e.getMessage().contains("NullPointerException")) {
				insert2ErrDb(listUrl + "_sid=" + sid + "_t=" + type, 7);
			}
		}
		
		for(UnivEnro ue : ues) {
			getDetail(ue);
		}
	}
	
	public void getDetail(UnivEnro ue) {
		Document detailDoc = null;
		try {
			detailDoc = new GenericMyuall().getDoc(ue.getSourceUrl());
			Element detailEl = detailDoc.getElementsByAttributeValue("class", "S_result S_result_kx mar_t_20").first();
			if(null == detailEl) {
				detailEl = detailDoc.getElementsByAttributeValue("class", "table2 S_result_kx mar_b_10").first();
			}
			ue.setContent(detailEl.html());
			if(StringUtils.isEmpty(ue.getTitle())) {
				Element titleEl = detailDoc.getElementsByAttributeValue("class", "S_title").first();
				ue.setTitle(titleEl.text());
			}
		} catch (Exception e) {
			System.out.println(e.getMessage());
			System.out.println(ue.getSourceUrl() + "_sid=" + ue.getSchoolId() + "_t=" + ue.getType());
			if(!e.getMessage().contains("NullPointerException")) {
				insert2ErrDb(ue.getSourceUrl() + "_sid=" + ue.getSchoolId() + "_t=" + ue.getType(), 4);
			}
		}
		insert2DetailDb(ue);
	}
	
	public void insert2DetailDb(UnivEnro ue) {
		try {
			PreparedStatement majorPs = conn.prepareStatement("INSERT INTO `univ_enrollment` (`schoolId`, `title`, `content`,`sourceUrl`,`publish_time`,`type`) "
				+ "values(?,?,?,?,?,?)");
			
			majorPs.setInt(1, ue.getSchoolId());
			majorPs.setString(2, ue.getTitle());
			majorPs.setString(3, ue.getContent());
			majorPs.setString(4, ue.getSourceUrl());
			majorPs.setString(5, ue.getPublishTime());
			majorPs.setInt(6, ue.getType());
			majorPs.execute();
		} catch(Exception e) {
			System.out.println(ue.getContent());
			e.printStackTrace();
		}
	}
	
	int sqlErrCount = 0;
	public void insert2ErrDb(String url, int type) {
		try {
			PreparedStatement  errPs = conn.prepareStatement("INSERT INTO `univ_err` (`url`, `type`) "
					+ "values(?,?)");
			errPs.setString(1, url);
			errPs.setInt(2, type);
			errPs.execute();
		} catch(Exception e) {
			e.printStackTrace();
		}
	}
	
	public Map<String, Integer> getErrs() {
		Map<String, Integer> errs = new HashMap<String, Integer>();
		try {
			Connection connection = conn;
			Statement statement = connection.createStatement();
			String sql = "select * from univ_err";
			ResultSet rs = statement.executeQuery(sql);
			while(rs.next()) {
				errs.put(rs.getString("url"), rs.getInt("type"));
			}
			rs.close();
			statement.close();
		} catch(Exception e) {
			e.printStackTrace();
		}
		return errs;
	}
	
	@Override
	public void run() {
		// 抓取招生计划和简章
		List<String> listUrls = getEnroUrl();
		if(null == listUrls) return;
		for(String id : listUrls) {
			getPage(id, "http://gkcx.eol.cn/schoolhtm/schoolInfo/"+id+"/10071/list_1.htm" , 2);
			getPage(id, "http://gkcx.eol.cn/schoolhtm/schoolInfo/"+id+"/10128/list_1.htm" , 1);
		}
		DbUtil.closeConn(conn);
	}
	
	public static int start = 0;
	private static synchronized List<String> getEnroUrl() {
		if(start > sidList.size()) return null;
		int oldStart = start;
		start = start + 126;
		return sidList.subList(oldStart, Math.min(start, sidList.size()));
	}
	
	static List<String> sidList = new ArrayList<String>();
	static {
		sidList.add("31");
		sidList.add("46");
		sidList.add("140");
		sidList.add("38");
		sidList.add("30");
		sidList.add("561");
		sidList.add("590");
		sidList.add("572");
		sidList.add("580");
		sidList.add("565");
		sidList.add("557");
		sidList.add("578");
		sidList.add("43");
		sidList.add("573");
		sidList.add("584");
		sidList.add("49");
		sidList.add("52");
		sidList.add("589");
		sidList.add("587");
		sidList.add("39");
		sidList.add("2614");
		sidList.add("592");
		sidList.add("566");
		sidList.add("53");
		sidList.add("586");
		sidList.add("581");
		sidList.add("576");
		sidList.add("594");
		sidList.add("866");
		sidList.add("40");
		sidList.add("571");
		sidList.add("564");
		sidList.add("562");
		sidList.add("574");
		sidList.add("563");
		sidList.add("585");
		sidList.add("45");
		sidList.add("569");
		sidList.add("831");
		sidList.add("59");
		sidList.add("60");
		sidList.add("82");
		sidList.add("80");
		sidList.add("88");
		sidList.add("81");
		sidList.add("93");
		sidList.add("89");
		sidList.add("79");
		sidList.add("85");
		sidList.add("92");
		sidList.add("94");
		sidList.add("95");
		sidList.add("54");
		sidList.add("606");
		sidList.add("41");
		sidList.add("55");
		sidList.add("603");
		sidList.add("600");
		sidList.add("595");
		sidList.add("624");
		sidList.add("625");
		sidList.add("609");
		sidList.add("262");
		sidList.add("139");
		sidList.add("269");
		sidList.add("271");
		sidList.add("279");
		sidList.add("272");
		sidList.add("282");
		sidList.add("921");
		sidList.add("920");
		sidList.add("280");
		sidList.add("275");
		sidList.add("32");
		sidList.add("508");
		sidList.add("525");
		sidList.add("2616");
		sidList.add("519");
		sidList.add("50");
		sidList.add("138");
		sidList.add("227");
		sidList.add("134");
		sidList.add("222");
		sidList.add("786");
		sidList.add("223");
		sidList.add("33");
		sidList.add("211");
		sidList.add("213");
		sidList.add("228");
		sidList.add("230");
		sidList.add("219");
		sidList.add("205");
		sidList.add("226");
		sidList.add("202");
		sidList.add("225");
		sidList.add("221");
		sidList.add("204");
		sidList.add("216");
		sidList.add("229");
		sidList.add("201");
		sidList.add("203");
		sidList.add("206");
		sidList.add("200");
		sidList.add("122");
		sidList.add("129");
		sidList.add("379");
		sidList.add("393");
		sidList.add("381");
		sidList.add("395");
		sidList.add("400");
		sidList.add("384");
		sidList.add("142");
		sidList.add("408");
		sidList.add("390");
		sidList.add("405");
		sidList.add("387");
		sidList.add("410");
		sidList.add("413");
		sidList.add("1291");
		sidList.add("421");
		sidList.add("34");
		sidList.add("599");
		sidList.add("124");
		sidList.add("450");
		sidList.add("424");
		sidList.add("427");
		sidList.add("419");
		sidList.add("441");
		sidList.add("453");
		sidList.add("1062");
		sidList.add("442");
		sidList.add("1063");
		sidList.add("444");
		sidList.add("2189");
		sidList.add("132");
		sidList.add("73");
		sidList.add("125");
		sidList.add("133");
		sidList.add("307");
		sidList.add("135");
		sidList.add("317");
		sidList.add("310");
		sidList.add("131");
		sidList.add("311");
		sidList.add("136");
		sidList.add("130");
		sidList.add("323");
		sidList.add("324");
		sidList.add("327");
		sidList.add("111");
		sidList.add("118");
		sidList.add("109");
		sidList.add("77");
		sidList.add("112");
		sidList.add("110");
		sidList.add("171");
		sidList.add("116");
		sidList.add("86");
		sidList.add("169");
		sidList.add("170");
		sidList.add("154");
		sidList.add("113");
		sidList.add("168");
		sidList.add("117");
		sidList.add("115");
		sidList.add("167");
		sidList.add("1064");
		sidList.add("153");
		sidList.add("182");
		sidList.add("149");
		sidList.add("1182");
		sidList.add("114");
		sidList.add("242");
		sidList.add("243");
		sidList.add("248");
		sidList.add("251");
		sidList.add("250");
		sidList.add("241");
		sidList.add("252");
		sidList.add("253");
		sidList.add("255");
		sidList.add("254");
		sidList.add("259");
		sidList.add("247");
		sidList.add("67");
		sidList.add("66");
		sidList.add("63");
		sidList.add("69");
		sidList.add("68");
		sidList.add("70");
		sidList.add("72");
		sidList.add("1022");
		sidList.add("325");
		sidList.add("1196");
		sidList.add("314");
		sidList.add("1023");
		sidList.add("1024");
		sidList.add("328");
		sidList.add("341");
		sidList.add("339");
		sidList.add("333");
		sidList.add("340");
		sidList.add("102");
		sidList.add("465");
		sidList.add("103");
		sidList.add("474");
		sidList.add("1020");
		sidList.add("473");
		sidList.add("477");
		sidList.add("475");
		sidList.add("476");
		sidList.add("157");
		sidList.add("177");
		sidList.add("183");
		sidList.add("172");
		sidList.add("185");
		sidList.add("195");
		sidList.add("174");
		sidList.add("186");
		sidList.add("189");
		sidList.add("175");
		sidList.add("126");
		sidList.add("61");
		sidList.add("537");
		sidList.add("507");
		sidList.add("528");
		sidList.add("547");
		sidList.add("542");
		sidList.add("491");
		sidList.add("553");
		sidList.add("551");
		sidList.add("64");
		sidList.add("1142");
		sidList.add("1238");
		sidList.add("622");
		sidList.add("510");
		sidList.add("494");
		sidList.add("65");
		sidList.add("496");
		sidList.add("550");
		sidList.add("535");
		sidList.add("549");
		sidList.add("62");
		sidList.add("458");
		sidList.add("460");
		sidList.add("481");
		sidList.add("462");
		sidList.add("873");
		sidList.add("482");
		sidList.add("459");
		sidList.add("833");
		sidList.add("876");
		sidList.add("485");
		sidList.add("878");
		sidList.add("493");
		sidList.add("487");
		sidList.add("484");
		sidList.add("489");
		sidList.add("479");
		sidList.add("42");
		sidList.add("434");
		sidList.add("436");
		sidList.add("417");
		sidList.add("420");
		sidList.add("425");
		sidList.add("440");
		sidList.add("452");
		sidList.add("461");
		sidList.add("448");
		sidList.add("451");
		sidList.add("423");
		sidList.add("435");
		sidList.add("443");
		sidList.add("385");
		sidList.add("386");
		sidList.add("44");
		sidList.add("392");
		sidList.add("401");
		sidList.add("402");
		sidList.add("58");
		sidList.add("396");
		sidList.add("406");
		sidList.add("416");
		sidList.add("415");
		sidList.add("407");
		sidList.add("104");
		sidList.add("106");
		sidList.add("283");
		sidList.add("105");
		sidList.add("287");
		sidList.add("288");
		sidList.add("295");
		sidList.add("294");
		sidList.add("289");
		sidList.add("296");
		sidList.add("98");
		sidList.add("298");
		sidList.add("300");
		sidList.add("297");
		sidList.add("299");
		sidList.add("961");
		sidList.add("301");
		sidList.add("303");
		sidList.add("304");
		sidList.add("305");
		sidList.add("964");
		sidList.add("504");
		sidList.add("284");
		sidList.add("302");
		sidList.add("96");
		sidList.add("536");
		sidList.add("532");
		sidList.add("530");
		sidList.add("1033");
		sidList.add("1034");
		sidList.add("538");
		sidList.add("531");
		sidList.add("541");
		sidList.add("539");
		sidList.add("1374");
		sidList.add("543");
		sidList.add("1252");
		sidList.add("51");
		sidList.add("661");
		sidList.add("268");
		sidList.add("232");
		sidList.add("184");
		sidList.add("1018");
		sidList.add("263");
		sidList.add("270");
		sidList.add("267");
		sidList.add("100");
		sidList.add("178");
		sidList.add("274");
		sidList.add("264");
		sidList.add("276");
		sidList.add("934");
		sidList.add("265");
		sidList.add("1082");
		sidList.add("1083");
		sidList.add("1084");
		sidList.add("198");
		sidList.add("191");
		sidList.add("1085");
		sidList.add("193");
		sidList.add("101");
		sidList.add("180");
		sidList.add("1086");
		sidList.add("1375");
		sidList.add("196");
		sidList.add("935");
		sidList.add("515");
		sidList.add("518");
		sidList.add("521");
		sidList.add("514");
		sidList.add("523");
		sidList.add("522");
		sidList.add("520");
		sidList.add("516");
		sidList.add("35");
		sidList.add("342");
		sidList.add("343");
		sidList.add("347");
		sidList.add("362");
		sidList.add("348");
		sidList.add("344");
		sidList.add("1089");
		sidList.add("360");
		sidList.add("364");
		sidList.add("470");
		sidList.add("1093");
		sidList.add("37");
		sidList.add("330");
		sidList.add("107");
		sidList.add("349");
		sidList.add("57");
		sidList.add("361");
		sidList.add("351");
		sidList.add("357");
		sidList.add("358");
		sidList.add("365");
		sidList.add("336");
		sidList.add("366");
		sidList.add("368");
		sidList.add("373");
		sidList.add("378");
		sidList.add("380");
		sidList.add("382");
		sidList.add("97");
		sidList.add("483");
		sidList.add("492");
		sidList.add("498");
		sidList.add("495");
		sidList.add("1095");
		sidList.add("502");
		sidList.add("500");
		sidList.add("367");
		sidList.add("370");
		sidList.add("544");
		sidList.add("74");
		sidList.add("1091");
		sidList.add("233");
		sidList.add("199");
		sidList.add("235");
		sidList.add("236");
		sidList.add("1036");
		sidList.add("238");
		sidList.add("879");
		sidList.add("91");
		sidList.add("1258");
		sidList.add("919");
		sidList.add("1242");
		sidList.add("308");
		sidList.add("260");
		sidList.add("322");
		sidList.add("1246");
		sidList.add("527");
		sidList.add("880");
		sidList.add("457");
		sidList.add("239");
		sidList.add("224");
		sidList.add("152");
		sidList.add("1049");
		sidList.add("148");
		sidList.add("246");
		sidList.add("1189");
		sidList.add("338");
		sidList.add("554");
		sidList.add("1922");
		sidList.add("1520");
		sidList.add("1178");
		sidList.add("430");
		sidList.add("293");
		sidList.add("604");
		sidList.add("610");
		sidList.add("963");
		sidList.add("173");
		sidList.add("454");
		sidList.add("626");
		sidList.add("208");
		sidList.add("218");
		sidList.add("256");
		sidList.add("190");
		sidList.add("285");
		sidList.add("932");
		sidList.add("350");
		sidList.add("353");
		sidList.add("501");
		sidList.add("545");
		sidList.add("1006");
		sidList.add("830");
		sidList.add("575");
		sidList.add("422");
		sidList.add("258");
		sidList.add("478");
		sidList.add("534");
		sidList.add("1923");
		sidList.add("455");
		sidList.add("1711");
		sidList.add("577");
		sidList.add("881");
		sidList.add("155");
		sidList.add("240");
		sidList.add("853");
		sidList.add("511");
		sidList.add("187");
		sidList.add("363");
		sidList.add("526");
		sidList.add("377");
		sidList.add("1518");
		sidList.add("653");
		sidList.add("512");
		sidList.add("291");
		sidList.add("583");
		sidList.add("1011");
		sidList.add("471");
		sidList.add("99");
		sidList.add("108");
		sidList.add("76");
		sidList.add("78");
		sidList.add("369");
		sidList.add("499");
		sidList.add("306");
		sidList.add("290");
		sidList.add("286");
		sidList.add("875");
		sidList.add("426");
		sidList.add("1007");
		sidList.add("1479");
		sidList.add("56");
		sidList.add("596");
		sidList.add("598");
		sidList.add("570");
		sidList.add("517");
		sidList.add("374");
		sidList.add("332");
		sidList.add("234");
		sidList.add("244");
		sidList.add("394");
		sidList.add("447");
		sidList.add("449");
		sidList.add("147");
		sidList.add("337");
		sidList.add("552");
		sidList.add("431");
		sidList.add("391");
		sidList.add("1352");
		sidList.add("192");
		sidList.add("36");
		sidList.add("123");
		sidList.add("414");
		sidList.add("71");
		sidList.add("127");
		sidList.add("128");
		sidList.add("506");
		sidList.add("468");
		sidList.add("399");
		sidList.add("146");
		sidList.add("375");
		sidList.add("568");
		sidList.add("194");
		sidList.add("445");
		sidList.add("608");
		sidList.add("418");
		sidList.add("397");
		sidList.add("540");
		sidList.add("611");
		sidList.add("1472");
		sidList.add("1075");
		sidList.add("1047");
		sidList.add("1045");
		sidList.add("1279");
		sidList.add("2617");
		sidList.add("1219");
		sidList.add("137");
		sidList.add("273");
		sidList.add("188");
		sidList.add("1312");
		sidList.add("312");
		sidList.add("2698");
		sidList.add("1356");
		sidList.add("548");
		sidList.add("335");
		sidList.add("1217");
		sidList.add("428");
		sidList.add("389");
		sidList.add("1029");
		sidList.add("1031");
		sidList.add("1046");
		sidList.add("1457");
		sidList.add("159");
		sidList.add("602");
		sidList.add("466");
		sidList.add("463");
		sidList.add("355");
		sidList.add("398");
		sidList.add("388");
		sidList.add("464");
		sidList.add("884");
		sidList.add("411");
		sidList.add("161");
		sidList.add("165");
		sidList.add("1048");
		sidList.add("197");
		sidList.add("488");
		sidList.add("505");
		sidList.add("867");
		sidList.add("164");
		sidList.add("166");
		sidList.add("160");
		sidList.add("787");
		sidList.add("509");
		sidList.add("313");
		sidList.add("75");
		sidList.add("1010");
		sidList.add("212");
		sidList.add("217");
		sidList.add("819");
		sidList.add("278");
		sidList.add("84");
		sidList.add("352");
		sidList.add("354");
		sidList.add("1043");
		sidList.add("480");
		sidList.add("266");
		sidList.add("231");
		sidList.add("1221");
		sidList.add("1220");
		sidList.add("257");
		sidList.add("277");
		sidList.add("1134");
		sidList.add("558");
		sidList.add("579");
		sidList.add("832");
		sidList.add("120");
		sidList.add("1073");
		sidList.add("1009");
		sidList.add("179");
		sidList.add("1038");
		sidList.add("345");
		sidList.add("433");
		sidList.add("245");
		sidList.add("1061");
		sidList.add("404");
		sidList.add("356");
		sidList.add("237");
		sidList.add("1233");
		sidList.add("1234");
		sidList.add("1287");
		sidList.add("2626");
		sidList.add("1251");
		sidList.add("281");
		sidList.add("601");
		sidList.add("627");
		sidList.add("883");
		sidList.add("1014");
		sidList.add("555");
		sidList.add("1210");
		sidList.add("331");
		sidList.add("834");
		sidList.add("1026");
		sidList.add("214");
		sidList.add("960");
		sidList.add("1253");
		sidList.add("628");
		sidList.add("629");
		sidList.add("692");
		sidList.add("1264");
		sidList.add("1204");
		sidList.add("2093");
		sidList.add("1257");
		sidList.add("1247");
		sidList.add("1180");
		sidList.add("176");
		sidList.add("1255");
		sidList.add("403");
		sidList.add("1259");
		sidList.add("1256");
		sidList.add("929");
		sidList.add("1090");
		sidList.add("1265");
		sidList.add("376");
		sidList.add("1263");
		sidList.add("1241");
		sidList.add("1604");
		sidList.add("1261");
		sidList.add("1250");
		sidList.add("1094");
		sidList.add("2809");
		sidList.add("529");
		sidList.add("1919");
		sidList.add("687");
		sidList.add("220");
		sidList.add("688");
		sidList.add("1671");
		sidList.add("1672");
		sidList.add("1673");
		sidList.add("1674");
		sidList.add("429");
		sidList.add("1012");
		sidList.add("1118");
		sidList.add("1165");
		sidList.add("3073");
		sidList.add("2157");
		sidList.add("2158");
		sidList.add("1269");
		sidList.add("2065");
		sidList.add("2891");
		sidList.add("889");
		sidList.add("888");
		sidList.add("2066");
		sidList.add("2068");
		sidList.add("1680");
		sidList.add("766");
		sidList.add("2201");
		sidList.add("2204");
		sidList.add("886");
		sidList.add("967");
		sidList.add("769");
		sidList.add("1642");
		sidList.add("1679");
		sidList.add("1675");
		sidList.add("2206");
		sidList.add("1808");
		sidList.add("1861");
		sidList.add("1506");
		sidList.add("1203");
		sidList.add("409");
		sidList.add("1027");
		sidList.add("808");
		sidList.add("1728");
		sidList.add("1212");
		sidList.add("1546");
		sidList.add("1605");
		sidList.add("765");
		sidList.add("2538");
		sidList.add("150");
		sidList.add("1364");
		sidList.add("874");
		sidList.add("896");
		sidList.add("891");
		sidList.add("1729");
		sidList.add("1177");
		sidList.add("2159");
		sidList.add("2070");
		sidList.add("1624");
		sidList.add("1920");
		sidList.add("815");
		sidList.add("1561");
		sidList.add("1564");
		sidList.add("664");
		sidList.add("1102");
		sidList.add("689");
		sidList.add("1707");
		sidList.add("2067");
		sidList.add("697");
		sidList.add("1607");
		sidList.add("1730");
		sidList.add("1731");
		sidList.add("2231");
		sidList.add("902");
		sidList.add("1732");
		sidList.add("1984");
		sidList.add("835");
		sidList.add("1640");
		sidList.add("1542");
		sidList.add("315");
		sidList.add("1765");
		sidList.add("3094");
		sidList.add("714");
		sidList.add("1429");
		sidList.add("1519");
		sidList.add("690");
		sidList.add("811");
		sidList.add("1921");
		sidList.add("1802");
		sidList.add("2472");
		sidList.add("1474");
		sidList.add("2059");
		sidList.add("1308");
		sidList.add("1096");
		sidList.add("2061");
		sidList.add("2060");
		sidList.add("2484");
		sidList.add("2057");
		sidList.add("2466");
		sidList.add("2474");
		sidList.add("2475");
		sidList.add("2479");
		sidList.add("2478");
		sidList.add("2058");
		sidList.add("1145");
		sidList.add("1892");
		sidList.add("1891");
		sidList.add("2348");
		sidList.add("2342");
		sidList.add("1965");
		sidList.add("2461");
		sidList.add("1052");
		sidList.add("1281");
		sidList.add("1971");
		sidList.add("2460");
		sidList.add("2381");
		sidList.add("2382");
		sidList.add("2383");
		sidList.add("2384");
		sidList.add("2385");
		sidList.add("2388");
		sidList.add("2389");
		sidList.add("2391");
		sidList.add("2392");
		sidList.add("2393");
		sidList.add("2394");
		sidList.add("2397");
		sidList.add("2396");
		sidList.add("2535");
		sidList.add("1400");
		sidList.add("2132");
		sidList.add("1889");
		sidList.add("1893");
		sidList.add("1530");
		sidList.add("1532");
		sidList.add("1559");
		sidList.add("2361");
		sidList.add("1665");
		sidList.add("2326");
		sidList.add("2487");
		sidList.add("2488");
		sidList.add("2409");
		sidList.add("2406");
		sidList.add("2408");
		sidList.add("2414");
		sidList.add("1276");
		sidList.add("2315");
		sidList.add("2513");
		sidList.add("1304");
		sidList.add("2398");
		sidList.add("2366");
		sidList.add("2369");
		sidList.add("2540");
		sidList.add("2574");
		sidList.add("2571");
		sidList.add("2541");
		sidList.add("2056");
		sidList.add("1297");
		sidList.add("2493");
		sidList.add("1395");
		sidList.add("2560");
		sidList.add("2252");
		sidList.add("1143");
		sidList.add("47");
		sidList.add("1215");
		sidList.add("1285");
		sidList.add("2498");
		sidList.add("2545");
		sidList.add("2546");
		sidList.add("2547");
		sidList.add("2548");
		sidList.add("2549");
		sidList.add("2550");
		sidList.add("2551");
		sidList.add("2552");
		sidList.add("1190");
		sidList.add("2555");
		sidList.add("2518");
		sidList.add("2519");
		sidList.add("2632");
		sidList.add("1557");
		sidList.add("2502");
		sidList.add("2501");
		sidList.add("2564");
		sidList.add("2563");
		sidList.add("2500");
		sidList.add("2499");
		sidList.add("1894");
		sidList.add("2380");
		sidList.add("2054");
		sidList.add("1305");
		sidList.add("2379");
		sidList.add("2482");
		sidList.add("1104");
		sidList.add("885");
		sidList.add("882");
		sidList.add("818");
		sidList.add("918");
		sidList.add("911");
		sidList.add("907");
		sidList.add("899");
		sidList.add("837");
		sidList.add("842");
		sidList.add("845");
		sidList.add("839");
		sidList.add("836");
		sidList.add("840");
		sidList.add("841");
		sidList.add("838");
		sidList.add("858");
		sidList.add("856");
		sidList.add("847");
		sidList.add("850");
		sidList.add("698");
		sidList.add("704");
		sidList.add("701");
		sidList.add("696");
		sidList.add("700");
		sidList.add("702");
		sidList.add("695");
		sidList.add("703");
		sidList.add("756");
		sidList.add("757");
		sidList.add("654");
		sidList.add("722");
		sidList.add("718");
		sidList.add("727");
		sidList.add("720");
		sidList.add("729");
		sidList.add("693");
		sidList.add("753");
		sidList.add("1421");
		sidList.add("1645");
		sidList.add("1428");
		sidList.add("1201");
		sidList.add("1422");
		sidList.add("1643");
		sidList.add("1644");
		sidList.add("1649");
		sidList.add("1548");
		sidList.add("1648");
		sidList.add("1571");
		sidList.add("1647");
		sidList.add("1651");
		sidList.add("1653");
		sidList.add("1652");
		sidList.add("1525");
		sidList.add("1574");
		sidList.add("1625");
		sidList.add("1629");
		sidList.add("1545");
		sidList.add("1627");
		sidList.add("1626");
		sidList.add("1693");
		sidList.add("1682");
		sidList.add("1688");
		sidList.add("1678");
		sidList.add("1681");
		sidList.add("1677");
		sidList.add("1692");
		sidList.add("1691");
		sidList.add("1690");
		sidList.add("3106");
		sidList.add("1684");
		sidList.add("1686");
		sidList.add("1683");
		sidList.add("1687");
		sidList.add("1611");
		sidList.add("1609");
		sidList.add("1613");
		sidList.add("1614");
		sidList.add("1612");
		sidList.add("1615");
		sidList.add("1616");
		sidList.add("715");
		sidList.add("768");
		sidList.add("759");
		sidList.add("707");
		sidList.add("739");
		sidList.add("738");
		sidList.add("708");
		sidList.add("737");
		sidList.add("713");
		sidList.add("710");
		sidList.add("712");
		sidList.add("709");
		sidList.add("716");
		sidList.add("764");
		sidList.add("762");
		sidList.add("679");
		sidList.add("673");
		sidList.add("666");
		sidList.add("677");
		sidList.add("663");
		sidList.add("686");
		sidList.add("682");
		sidList.add("2203");
		sidList.add("1065");
		sidList.add("2207");
		sidList.add("1435");
		sidList.add("1069");
		sidList.add("2202");
		sidList.add("1171");
		sidList.add("1418");
		sidList.add("1589");
		sidList.add("1370");
		sidList.add("2210");
		sidList.add("1051");
		sidList.add("1121");
		sidList.add("1449");
		sidList.add("2211");
		sidList.add("2215");
		sidList.add("2213");
		sidList.add("1376");
		sidList.add("1151");
		sidList.add("1239");
		sidList.add("2214");
		sidList.add("1193");
		sidList.add("1330");
		sidList.add("1434");
		sidList.add("1406");
		sidList.add("1140");
		sidList.add("1775");
		sidList.add("1769");
		sidList.add("1780");
		sidList.add("1767");
		sidList.add("1768");
		sidList.add("1353");
		sidList.add("1774");
		sidList.add("1351");
		sidList.add("1355");
		sidList.add("1341");
		sidList.add("1778");
		sidList.add("1779");
		sidList.add("1777");
		sidList.add("1357");
		sidList.add("1776");
		sidList.add("1349");
		sidList.add("1350");
		sidList.add("1781");
		sidList.add("1345");
		sidList.add("1782");
		sidList.add("1783");
		sidList.add("1805");
		sidList.add("1806");
		sidList.add("1807");
		sidList.add("1812");
		sidList.add("1809");
		sidList.add("1813");
		sidList.add("1810");
		sidList.add("1814");
		sidList.add("1820");
		sidList.add("1817");
		sidList.add("1815");
		sidList.add("1821");
		sidList.add("1822");
		sidList.add("1811");
		sidList.add("1816");
		sidList.add("1819");
		sidList.add("1818");
		sidList.add("1827");
		sidList.add("1825");
		sidList.add("1824");
		sidList.add("1826");
		sidList.add("1823");
		sidList.add("1867");
		sidList.add("1865");
		sidList.add("1869");
		sidList.add("1870");
		sidList.add("1587");
		sidList.add("1868");
		sidList.add("1872");
		sidList.add("1871");
		sidList.add("893");
		sidList.add("895");
		sidList.add("927");
		sidList.add("931");
		sidList.add("940");
		sidList.add("943");
		sidList.add("944");
		sidList.add("959");
		sidList.add("958");
		sidList.add("956");
		sidList.add("913");
		sidList.add("950");
		sidList.add("949");
		sidList.add("948");
		sidList.add("954");
		sidList.add("904");
		sidList.add("2097");
		sidList.add("1336");
		sidList.add("2109");
		sidList.add("2101");
		sidList.add("2099");
		sidList.add("2098");
		sidList.add("1369");
		sidList.add("2102");
		sidList.add("2100");
		sidList.add("2104");
		sidList.add("2106");
		sidList.add("2103");
		sidList.add("2105");
		sidList.add("2108");
		sidList.add("2140");
		sidList.add("2110");
		sidList.add("2112");
		sidList.add("2111");
		sidList.add("2114");
		sidList.add("2113");
		sidList.add("1168");
		sidList.add("2145");
		sidList.add("1050");
		sidList.add("1554");
		sidList.add("1924");
		sidList.add("1410");
		sidList.add("1156");
		sidList.add("1172");
		sidList.add("1925");
		sidList.add("1187");
		sidList.add("1926");
		sidList.add("1547");
		sidList.add("1929");
		sidList.add("1301");
		sidList.add("1928");
		sidList.add("1927");
		sidList.add("816");
		sidList.add("1947");
		sidList.add("812");
		sidList.add("1946");
		sidList.add("806");
		sidList.add("1948");
		sidList.add("1162");
		sidList.add("1951");
		sidList.add("1950");
		sidList.add("1949");
		sidList.add("1413");
		sidList.add("1016");
		sidList.add("1953");
		sidList.add("1068");
		sidList.add("1074");
		sidList.add("1019");
		sidList.add("1015");
		sidList.add("1992");
		sidList.add("1993");
		sidList.add("2000");
		sidList.add("1987");
		sidList.add("1999");
		sidList.add("2008");
		sidList.add("1998");
		sidList.add("1997");
		sidList.add("1996");
		sidList.add("2009");
		sidList.add("2001");
		sidList.add("2011");
		sidList.add("2012");
		sidList.add("2013");
		sidList.add("2003");
		sidList.add("2014");
		sidList.add("2015");
		sidList.add("2002");
		sidList.add("2016");
		sidList.add("635");
		sidList.add("2048");
		sidList.add("974");
		sidList.add("617");
		sidList.add("620");
		sidList.add("985");
		sidList.add("646");
		sidList.add("972");
		sidList.add("970");
		sidList.add("971");
		sidList.add("615");
		sidList.add("616");
		sidList.add("997");
		sidList.add("998");
		sidList.add("993");
		sidList.add("641");
		sidList.add("994");
		sidList.add("640");
		sidList.add("983");
		sidList.add("645");
		sidList.add("984");
		sidList.add("980");
		sidList.add("613");
		sidList.add("1738");
		sidList.add("1735");
		sidList.add("1739");
		sidList.add("1736");
		sidList.add("1746");
		sidList.add("1737");
		sidList.add("1741");
		sidList.add("1744");
		sidList.add("1740");
		sidList.add("1743");
		sidList.add("1382");
		sidList.add("1478");
		sidList.add("1595");
		sidList.add("1493");
		sidList.add("1487");
		sidList.add("771");
		sidList.add("800");
		sidList.add("791");
		sidList.add("799");
		sidList.add("795");
		sidList.add("779");
		sidList.add("778");
		sidList.add("780");
		sidList.add("793");
		sidList.add("772");
		sidList.add("2084");
		sidList.add("789");
		sidList.add("777");
		sidList.add("775");
		sidList.add("776");
		sidList.add("790");
		sidList.add("2268");
		sidList.add("2267");
		sidList.add("2269");
		sidList.add("2266");
		sidList.add("1567");
		sidList.add("1572");
		sidList.add("2270");
		sidList.add("1562");
		sidList.add("2271");
		sidList.add("1563");
		sidList.add("1565");
		sidList.add("2166");
		sidList.add("2167");
		sidList.add("2173");
		sidList.add("2174");
		sidList.add("2168");
		sidList.add("2175");
		sidList.add("2169");
		sidList.add("2170");
		sidList.add("2232");
		sidList.add("2233");
		sidList.add("2237");
		sidList.add("2235");
		sidList.add("1383");
		sidList.add("2234");
		sidList.add("2238");
		sidList.add("2236");
		sidList.add("1710");
		sidList.add("1717");
		sidList.add("1712");
		sidList.add("1715");
		sidList.add("1716");
		sidList.add("1713");
		sidList.add("1714");
		sidList.add("2279");
		sidList.add("2280");
		sidList.add("1569");
		sidList.add("1568");
		sidList.add("2282");
		sidList.add("2283");
		sidList.add("2285");
		sidList.add("2286");
		sidList.add("2287");
		sidList.add("1333");
		sidList.add("1389");
		sidList.add("1335");
		sidList.add("2071");
		sidList.add("1541");
		sidList.add("2073");
		sidList.add("2075");
		sidList.add("2074");
		sidList.add("1392");
		sidList.add("2862");
		sidList.add("2875");
		sidList.add("2859");
		sidList.add("2865");
		sidList.add("2956");
		sidList.add("3057");
		sidList.add("3056");
		sidList.add("3149");
		sidList.add("2905");
		sidList.add("2889");
		sidList.add("1504");
		sidList.add("3005");
		sidList.add("2908");
		sidList.add("2909");
		sidList.add("3098");
		sidList.add("2950");
		sidList.add("3086");
		sidList.add("3102");
		sidList.add("3050");
		sidList.add("2869");
		sidList.add("1489");
		sidList.add("2876");
		sidList.add("2873");
		sidList.add("2877");
		sidList.add("2874");
		sidList.add("2878");
		sidList.add("3107");
		sidList.add("2852");
		sidList.add("2860");
		sidList.add("1002");
		sidList.add("2886");
		sidList.add("2191");
		sidList.add("2618");
		sidList.add("1830");
		sidList.add("1875");
		sidList.add("2895");
		sidList.add("2638");
		sidList.add("630");
		sidList.add("991");
		sidList.add("1734");
		sidList.add("3053");
		sidList.add("2879");
		sidList.add("3051");
		sidList.add("2700");
		sidList.add("897");
		sidList.add("3048");
		sidList.add("1332");
		sidList.add("2885");
		sidList.add("2850");
		sidList.add("742");
		sidList.add("2951");
		sidList.add("2094");
		sidList.add("2856");
		sidList.add("3108");
		sidList.add("1004");
		sidList.add("2871");
		sidList.add("3004");
		sidList.add("1886");
		sidList.add("1873");
		sidList.add("872");
		sidList.add("870");
		sidList.add("925");
		sidList.add("953");
		sidList.add("922");
		sidList.add("942");
		sidList.add("908");
		sidList.add("917");
		sidList.add("947");
		sidList.add("941");
		sidList.add("871");
		sidList.add("2096");
		sidList.add("2095");
		sidList.add("2107");
		sidList.add("2128");
		sidList.add("2129");
		sidList.add("2130");
		sidList.add("2125");
		sidList.add("2118");
		sidList.add("2507");
		sidList.add("2506");
		sidList.add("2510");
		sidList.add("2509");
		sidList.add("2508");
		sidList.add("2119");
		sidList.add("2127");
		sidList.add("2117");
		sidList.add("2120");
		sidList.add("2122");
		sidList.add("1510");
		sidList.add("2124");
		sidList.add("2131");
		sidList.add("2116");
		sidList.add("1940");
		sidList.add("1937");
		sidList.add("1936");
		sidList.add("1938");
		sidList.add("1931");
		sidList.add("890");
		sidList.add("1502");
		sidList.add("1100");
		sidList.add("1933");
		sidList.add("1934");
		sidList.add("1932");
		sidList.add("1334");
		sidList.add("2444");
		sidList.add("1957");
		sidList.add("1955");
		sidList.add("1954");
		sidList.add("1956");
		sidList.add("1326");
		sidList.add("1551");
		sidList.add("1961");
		sidList.add("1959");
		sidList.add("1952");
		sidList.add("1962");
		sidList.add("2456");
		sidList.add("1991");
		sidList.add("1988");
		sidList.add("1994");
		sidList.add("2031");
		sidList.add("2032");
		sidList.add("2033");
		sidList.add("2929");
		sidList.add("2035");
		sidList.add("2028");
		sidList.add("2024");
		sidList.add("2023");
		sidList.add("2021");
		sidList.add("2018");
		sidList.add("2029");
		sidList.add("2036");
		sidList.add("1990");
		sidList.add("2025");
		sidList.add("2027");
		sidList.add("2037");
		sidList.add("2030");
		sidList.add("2022");
		sidList.add("2005");
		sidList.add("2017");
		sidList.add("1198");
		sidList.add("2006");
		sidList.add("2465");
		sidList.add("968");
		sidList.add("632");
		sidList.add("987");
		sidList.add("638");
		sidList.add("979");
		sidList.add("988");
		sidList.add("2051");
		sidList.add("642");
		sidList.add("2053");
		sidList.add("2052");
		sidList.add("648");
		sidList.add("992");
		sidList.add("981");
		sidList.add("2050");
		sidList.add("2049");
		sidList.add("1749");
		sidList.add("1752");
		sidList.add("1742");
		sidList.add("1745");
		sidList.add("1751");
		sidList.add("1754");
		sidList.add("1753");
		sidList.add("1390");
		sidList.add("1495");
		sidList.add("1491");
		sidList.add("2080");
		sidList.add("1486");
		sidList.add("1494");
		sidList.add("1485");
		sidList.add("1496");
		sidList.add("1484");
		sidList.add("1480");
		sidList.add("1488");
		sidList.add("1483");
		sidList.add("1490");
		sidList.add("2082");
		sidList.add("2083");
		sidList.add("774");
		sidList.add("2086");
		sidList.add("805");
		sidList.add("797");
		sidList.add("802");
		sidList.add("1278");
		sidList.add("803");
		sidList.add("804");
		sidList.add("792");
		sidList.add("2085");
		sidList.add("2088");
		sidList.add("2087");
		sidList.add("1451");
		sidList.add("2274");
		sidList.add("2272");
		sidList.add("2273");
		sidList.add("1590");
		sidList.add("2568");
		sidList.add("2160");
		sidList.add("2162");
		sidList.add("2161");
		sidList.add("1399");
		sidList.add("2165");
		sidList.add("2164");
		sidList.add("2163");
		sidList.add("2179");
		sidList.add("2172");
		sidList.add("2171");
		sidList.add("2178");
		sidList.add("2177");
		sidList.add("2180");
		sidList.add("1917");
		sidList.add("1916");
		sidList.add("1918");
		sidList.add("2247");
		sidList.add("2246");
		sidList.add("2245");
		sidList.add("2244");
		sidList.add("2243");
		sidList.add("1146");
		sidList.add("2240");
		sidList.add("1128");
		sidList.add("2239");
		sidList.add("2250");
		sidList.add("2249");
		sidList.add("2248");
		sidList.add("1705");
		sidList.add("1706");
		sidList.add("1708");
		sidList.add("1721");
		sidList.add("1722");
		sidList.add("1720");
		sidList.add("1719");
		sidList.add("1718");
		sidList.add("1723");
		sidList.add("2278");
		sidList.add("2281");
		sidList.add("2284");
		sidList.add("2069");
		sidList.add("2076");
		sidList.add("1372");
		sidList.add("2486");
		sidList.add("2298");
		sidList.add("1288");
		sidList.add("2339");
		sidList.add("207");
		sidList.add("2536");
		sidList.add("2390");
		sidList.add("2432");
		sidList.add("2516");
		sidList.add("2525");
		sidList.add("2489");
		sidList.add("3043");
		sidList.add("2902");
		sidList.add("2926");
		sidList.add("2962");
		sidList.add("2932");
		sidList.add("3049");
		sidList.add("2867");
		sidList.add("1378");
		sidList.add("2294");
		sidList.add("849");
		sidList.add("857");
		sidList.add("854");
		sidList.add("731");
		sidList.add("725");
		sidList.add("730");
		sidList.add("747");
		sidList.add("658");
		sidList.add("726");
		sidList.add("1602");
		sidList.add("2306");
		sidList.add("1411");
		sidList.add("1641");
		sidList.add("1639");
		sidList.add("1663");
		sidList.add("1664");
		sidList.add("1658");
		sidList.add("1660");
		sidList.add("1657");
		sidList.add("1444");
		sidList.add("1654");
		sidList.add("1655");
		sidList.add("1656");
		sidList.add("1662");
		sidList.add("2322");
		sidList.add("2323");
		sidList.add("1631");
		sidList.add("1628");
		sidList.add("1153");
		sidList.add("1630");
		sidList.add("861");
		sidList.add("1163");
		sidList.add("1524");
		sidList.add("1632");
		sidList.add("1394");
		sidList.add("1132");
		sidList.add("1164");
		sidList.add("2318");
		sidList.add("1694");
		sidList.add("1695");
		sidList.add("1685");
		sidList.add("1696");
		sidList.add("2333");
		sidList.add("2334");
		sidList.add("1617");
		sidList.add("1618");
		sidList.add("1619");
		sidList.add("2312");
		sidList.add("2190");
		sidList.add("2192");
		sidList.add("743");
		sidList.add("734");
		sidList.add("2194");
		sidList.add("760");
		sidList.add("2193");
		sidList.add("741");
		sidList.add("732");
		sidList.add("733");
		sidList.add("2195");
		sidList.add("2196");
		sidList.add("2197");
		sidList.add("2529");
		sidList.add("2362");
		sidList.add("671");
		sidList.add("1471");
		sidList.add("2363");
		sidList.add("2209");
		sidList.add("1191");
		sidList.add("1141");
		sidList.add("2208");
		sidList.add("1361");
		sidList.add("2220");
		sidList.add("2216");
		sidList.add("1120");
		sidList.add("2217");
		sidList.add("2219");
		sidList.add("1359");
		sidList.add("2218");
		sidList.add("1155");
		sidList.add("1543");
		sidList.add("1388");
		sidList.add("1405");
		sidList.add("2539");
		sidList.add("1766");
		sidList.add("1770");
		sidList.add("1789");
		sidList.add("1771");
		sidList.add("1785");
		sidList.add("1787");
		sidList.add("1773");
		sidList.add("1786");
		sidList.add("1790");
		sidList.add("1788");
		sidList.add("2377");
		sidList.add("1804");
		sidList.add("1845");
		sidList.add("1832");
		sidList.add("1844");
		sidList.add("1837");
		sidList.add("1835");
		sidList.add("1841");
		sidList.add("1843");
		sidList.add("1838");
		sidList.add("1828");
		sidList.add("1836");
		sidList.add("1839");
		sidList.add("1407");
		sidList.add("2404");
		sidList.add("1829");
		sidList.add("1831");
		sidList.add("1842");
		sidList.add("1834");
		sidList.add("1833");
		sidList.add("1863");
		sidList.add("1862");
		sidList.add("1882");
		sidList.add("1881");
		sidList.add("1879");
		sidList.add("1880");
		sidList.add("1885");
		sidList.add("1884");
		sidList.add("1876");
		sidList.add("1866");
		sidList.add("1883");
		sidList.add("1878");
		sidList.add("1887");
		sidList.add("650");
		sidList.add("309");
		sidList.add("655");
		sidList.add("1763");
		sidList.add("1801");
		sidList.add("1800");
		sidList.add("1799");
		sidList.add("1859");
		sidList.add("1858");
		sidList.add("1323");
		sidList.add("1505");
		sidList.add("2463");
		sidList.add("2480");
		sidList.add("2491");
		sidList.add("1044");
		sidList.add("1055");
		sidList.add("1110");
		sidList.add("1112");
		sidList.add("910");
		sidList.add("2300");
		sidList.add("1298");
		sidList.add("1115");
		sidList.add("1401");
		sidList.add("1314");
		sidList.add("1973");
		sidList.add("1008");
		sidList.add("2469");
		sidList.add("1131");
		sidList.add("2532");
		sidList.add("1958");
		sidList.add("1750");
		sidList.add("2367");
		sidList.add("1580");
		sidList.add("1324");
		sidList.add("2449");
		sidList.add("1960");
		sidList.add("1056");
		sidList.add("810");
		sidList.add("2471");
		sidList.add("2470");
		sidList.add("2055");
		sidList.add("1455");
		sidList.add("1214");
		sidList.add("1437");
		sidList.add("2554");
		sidList.add("2435");
		sidList.add("900");
		sidList.add("955");
		sidList.add("2431");
		sidList.add("926");
		sidList.add("2434");
		sidList.add("1277");
		sidList.add("1067");
		sidList.add("2341");
		sidList.add("2439");
		sidList.add("2427");
		sidList.add("2433");
		sidList.add("794");
		sidList.add("2473");
		sidList.add("2544");
		sidList.add("2542");
		sidList.add("2556");
		sidList.add("1442");
		sidList.add("1403");
		sidList.add("2553");
		sidList.add("1431");
		sidList.add("2115");
		sidList.add("2331");
		sidList.add("1659");
		sidList.add("1041");
		sidList.add("1402");
		sidList.add("746");
		sidList.add("796");
		sidList.add("1412");
		sidList.add("2325");
		sidList.add("852");
		sidList.add("2299");
		sidList.add("1059");
		sidList.add("915");
		sidList.add("1013");
		sidList.add("1415");
		sidList.add("2562");
		sidList.add("1888");
		sidList.add("2524");
		sidList.add("1280");
		sidList.add("2181");
		sidList.add("1066");
		sidList.add("2328");
		sidList.add("2543");
		sidList.add("1144");
		sidList.add("2855");
		sidList.add("1129");
		sidList.add("2340");
		sidList.add("1477");
		sidList.add("1475");
		sidList.add("359");
		sidList.add("1070");
		sidList.add("2407");
		sidList.add("1558");
		sidList.add("1436");
		sidList.add("1581");
		sidList.add("1404");
		sidList.add("1327");
		sidList.add("2966");
		sidList.add("2121");
		sidList.add("2438");
		sidList.add("2275");
		sidList.add("2412");
		sidList.add("2575");
		sidList.add("1521");
		sidList.add("2526");
		sidList.add("2359");
		sidList.add("1575");
		sidList.add("1601");
		sidList.add("1133");
		sidList.add("1620");
		sidList.add("2370");
		sidList.add("1584");
		sidList.add("859");
		sidList.add("1166");
		sidList.add("1540");
		sidList.add("2496");
		sidList.add("2020");
		sidList.add("1969");
		sidList.add("1600");
		sidList.add("1803");
		sidList.add("1127");
		sidList.add("2523");
		sidList.add("717");
		sidList.add("2468");
		sidList.add("1935");
		sidList.add("2290");
		sidList.add("2410");
		sidList.add("1576");
		sidList.add("2371");
		sidList.add("1476");
		sidList.add("744");
		sidList.add("1169");
		sidList.add("1890");
		sidList.add("1968");
		sidList.add("2495");
		sidList.add("2534");
		sidList.add("2329");
		sidList.add("848");
		sidList.add("1608");
		sidList.add("2297");
		sidList.add("1877");
		sidList.add("1419");
		sidList.add("2576");
		sidList.add("1585");
		sidList.add("2253");
		sidList.add("1661");
		sidList.add("2530");
		sidList.add("1114");
		sidList.add("652");
		sidList.add("2467");
		sidList.add("2428");
		sidList.add("2360");
		sidList.add("1176");
		sidList.add("2344");
		sidList.add("2429");
		sidList.add("2007");
		sidList.add("1262");
		sidList.add("851");
		sidList.add("914");
		sidList.add("2477");
		sidList.add("1446");
		sidList.add("2019");
		sidList.add("1972");
		sidList.add("678");
		sidList.add("1930");
		sidList.add("2372");
		sidList.add("1963");
		sidList.add("2276");
		sidList.add("1966");
		sidList.add("2430");
		sidList.add("2572");
		sidList.add("2561");
		sidList.add("2490");
		sidList.add("1408");
		sidList.add("1591");
		sidList.add("1939");
		sidList.add("2126");
		sidList.add("2696");
		sidList.add("2570");
		sidList.add("1195");
		sidList.add("1577");
		sidList.add("2327");
		sidList.add("1124");
		sidList.add("2405");
		sidList.add("2476");
		sidList.add("1267");
		sidList.add("2573");
		sidList.add("1441");
		sidList.add("2241");
		sidList.add("1511");
		sidList.add("1268");
		sidList.add("1941");
		sidList.add("2291");
		sidList.add("1130");
		sidList.add("2459");
		sidList.add("1200");
		sidList.add("2123");
		sidList.add("2254");
		sidList.add("1621");
		sidList.add("946");
		sidList.add("2349");
		sidList.add("2330");
		sidList.add("1555");
		sidList.add("1331");
		sidList.add("1970");
		sidList.add("2242");
		sidList.add("1092");
		sidList.add("1983");
		sidList.add("1236");
		sidList.add("1071");
		sidList.add("1266");
		sidList.add("1042");
		sidList.add("798");
		sidList.add("162");
		sidList.add("119");
		sidList.add("334");
		sidList.add("2307");
		sidList.add("2308");
		sidList.add("660");
		sidList.add("2854");
		sidList.add("2643");
		sidList.add("2674");
		sidList.add("2672");
		sidList.add("2847");
		sidList.add("1578");
		sidList.add("2931");
		sidList.add("2913");
		sidList.add("2969");
		sidList.add("3040");
		sidList.add("2350");
		sidList.add("2912");
		sidList.add("1456");
		sidList.add("939");
		sidList.add("1218");
		sidList.add("87");
		sidList.add("784");
		sidList.add("2503");
		sidList.add("316");
		sidList.add("2415");
		sidList.add("156");
		sidList.add("1553");
		sidList.add("249");
		sidList.add("209");
		sidList.add("210");
		sidList.add("215");
		sidList.add("2336");
		sidList.add("1021");
		sidList.add("432");
		sidList.add("437");
		sidList.add("1316");
		sidList.add("607");
		sidList.add("372");
		sidList.add("412");
		sidList.add("2314");
		sidList.add("346");
		sidList.add("2520");
		sidList.add("2521");
		sidList.add("1570");
		sidList.add("2566");
		sidList.add("546");
		sidList.add("2615");
		sidList.add("1550");
		sidList.add("1573");
		sidList.add("2320");
		sidList.add("533");
		sidList.add("2364");
		sidList.add("490");
		sidList.add("2399");
		sidList.add("2421");
		sidList.add("2358");
		sidList.add("2316");
		sidList.add("1229");
		sidList.add("1321");
		sidList.add("2828");
		sidList.add("2810");
		sidList.add("1139");
		sidList.add("711");
		sidList.add("48");
		sidList.add("691");
		sidList.add("651");
		sidList.add("1606");
		sidList.add("1638");
		sidList.add("1764");
		sidList.add("2604");
		sidList.add("2400");
		sidList.add("2640");
		sidList.add("1860");
		sidList.add("2606");
		sidList.add("2607");
		sidList.add("2609");
		sidList.add("2608");
		sidList.add("1430");
		sidList.add("1147");
		sidList.add("1986");
		sidList.add("1985");
		sidList.add("1995");
		sidList.add("2610");
		sidList.add("90");
		sidList.add("2628");
		sidList.add("1222");
		sidList.add("1160");
		sidList.add("2787");
		sidList.add("446");
		sidList.add("1272");
		sidList.add("2660");
		sidList.add("318");
		sidList.add("326");
		sidList.add("2659");
		sidList.add("3089");
		sidList.add("1610");
		sidList.add("1181");
		sidList.add("1116");
		sidList.add("2955");
		sidList.add("2558");
		sidList.add("2221");
		sidList.add("2662");
		sidList.add("1784");
		sidList.add("2651");
		sidList.add("2655");
		sidList.add("2652");
		sidList.add("2656");
		sidList.add("2654");
		sidList.add("2335");
		sidList.add("2378");
		sidList.add("3046");
		sidList.add("2699");
		sidList.add("1481");
		sidList.add("1592");
		sidList.add("2959");
		sidList.add("2897");
		sidList.add("2960");
		sidList.add("2817");
		sidList.add("2961");
		sidList.add("2511");
		sidList.add("2317");
		sidList.add("2650");
		sidList.add("2424");
		sidList.add("2936");
		sidList.add("2319");
		sidList.add("2954");
		sidList.add("143");
		sidList.add("1874");
		sidList.add("2464");
		sidList.add("2938");
		sidList.add("3037");
		sidList.add("2034");
		sidList.add("2933");
		sidList.add("2930");
		sidList.add("2004");
		sidList.add("2649");
		sidList.add("2457");
		sidList.add("1945");
		sidList.add("2948");
		sidList.add("2949");
		sidList.add("2458");
		sidList.add("438");
		sidList.add("2945");
		sidList.add("1513");
		sidList.add("619");
		sidList.add("2669");
		sidList.add("2683");
		sidList.add("2684");
		sidList.add("567");
		sidList.add("3042");
		sidList.add("2481");
		sidList.add("2647");
		sidList.add("2644");
		sidList.add("2646");
		sidList.add("1420");
		sidList.add("2861");
		sidList.add("2637");
		sidList.add("2915");
		sidList.add("2690");
		sidList.add("2667");
		sidList.add("2666");
		sidList.add("2922");
		sidList.add("2629");
		sidList.add("2492");
		sidList.add("2365");
		sidList.add("292");
		sidList.add("2687");
		sidList.add("2686");
		sidList.add("2324");
		sidList.add("2694");
		sidList.add("1560");
		sidList.add("855");
		sidList.add("1698");
		sidList.add("597");
		sidList.add("2693");
		sidList.add("2695");
		sidList.add("3128");
		sidList.add("2952");
		sidList.add("3088");
		sidList.add("2857");
		sidList.add("2642");
		sidList.add("2522");
		sidList.add("2305");
		sidList.add("1603");
		sidList.add("3099");
		sidList.add("2664");
		sidList.add("2668");
		sidList.add("3115");
		sidList.add("2665");
		sidList.add("2567");
		sidList.add("2569");
		sidList.add("1596");
		sidList.add("2446");
		sidList.add("3193");
		sidList.add("2445");
		sidList.add("2447");
		sidList.add("2866");
		sidList.add("144");
		sidList.add("556");
		sidList.add("3211");
		sidList.add("2844");
		sidList.add("952");
		sidList.add("1158");
		sidList.add("2387");
		sidList.add("2413");
		sidList.add("2411");
		sidList.add("2373");
		sidList.add("2631");
		sidList.add("3145");
		sidList.add("2996");
		sidList.add("2815");
		sidList.add("2941");
		sidList.add("2965");
		sidList.add("2853");
		sidList.add("2858");
		sidList.add("2864");
		sidList.add("2939");
		sidList.add("3063");
		sidList.add("2934");
		sidList.add("3143");
		sidList.add("3090");
		sidList.add("2921");
		sidList.add("3066");
		sidList.add("3065");
		sidList.add("2970");
		sidList.add("1864");
		sidList.add("2963");
		sidList.add("3120");
		sidList.add("2907");
		sidList.add("3035");
		sidList.add("3036");
		sidList.add("2064");
		sidList.add("612");
		sidList.add("2947");
		sidList.add("2943");
		sidList.add("782");
		sidList.add("2920");
		sidList.add("2918");
		sidList.add("3117");
		sidList.add("3044");
		sidList.add("3112");
		sidList.add("2911");
		sidList.add("2958");
		sidList.add("3007");
		sidList.add("3151");
		sidList.add("2347");
		sidList.add("2368");
		sidList.add("846");
		sidList.add("1676");
		sidList.add("3118");
		sidList.add("1213");
		sidList.add("1211");
		sidList.add("3061");
		sidList.add("2910");
		sidList.add("2944");
		sidList.add("3126");
		sidList.add("3052");
		sidList.add("3110");
		sidList.add("3062");
		sidList.add("3129");
		sidList.add("3124");
		sidList.add("3105");
		sidList.add("3104");
		sidList.add("3109");
		sidList.add("3113");
		sidList.add("3068");
		sidList.add("3067");
		sidList.add("3114");
		sidList.add("3214");
		sidList.add("3079");
		sidList.add("3076");
		sidList.add("3074");
		sidList.add("3212");
		sidList.add("3123");
		sidList.add("3097");
		sidList.add("3092");
		sidList.add("3055");
		sidList.add("3060");
		sidList.add("3208");
		sidList.add("3185");
		sidList.add("3187");
		sidList.add("3186");
		sidList.add("3204");
		sidList.add("3197");
		sidList.add("3154");
		sidList.add("3161");
		sidList.add("3203");
		sidList.add("3202");
		sidList.add("1650");
		sidList.add("3215");
		sidList.add("3194");
		sidList.add("3216");
		sidList.add("3213");
		sidList.add("965");
		sidList.add("966");
		sidList.add("1245");
		sidList.add("472");
		sidList.add("469");
		sidList.add("456");
		sidList.add("2136");
		sidList.add("2288");
		sidList.add("1243");
		sidList.add("1387");
		sidList.add("1188");
		sidList.add("868");
		sidList.add("1329");
		sidList.add("647");
		sidList.add("559");
		sidList.add("1899");
		sidList.add("1762");
		sidList.add("329");
		sidList.add("783");
		sidList.add("1791");
		sidList.add("1942");
		sidList.add("1179");
		sidList.add("1848");
		sidList.add("2256");
		sidList.add("676");
		sidList.add("2343");
		sidList.add("2483");
		sidList.add("2517");
		sidList.add("2303");
		sidList.add("825");
		sidList.add("822");
		sidList.add("824");
		sidList.add("887");
		sidList.add("750");
		sidList.add("1669");
		sidList.add("860");
		sidList.add("1704");
		sidList.add("1622");
		sidList.add("763");
		sidList.add("2557");
		sidList.add("2228");
		sidList.add("1597");
		sidList.add("1154");
		sidList.add("933");
		sidList.add("1397");
		sidList.add("1544");
		sidList.add("2226");
		sidList.add("2225");
		sidList.add("1793");
		sidList.add("1798");
		sidList.add("1849");
		sidList.add("1896");
		sidList.add("1897");
		sidList.add("1912");
		sidList.add("869");
		sidList.add("2137");
		sidList.add("2139");
		sidList.add("2138");
		sidList.add("2152");
		sidList.add("1106");
		sidList.add("1977");
		sidList.add("1424");
		sidList.add("1980");
		sidList.add("1979");
		sidList.add("1978");
		sidList.add("975");
		sidList.add("973");
		sidList.add("995");
		sidList.add("631");
		sidList.add("1005");
		sidList.add("643");
		sidList.add("649");
		sidList.add("1500");
		sidList.add("1498");
		sidList.add("781");
		sidList.add("773");
		sidList.add("788");
		sidList.add("2186");
		sidList.add("862");
		sidList.add("2264");
		sidList.add("2263");
		sidList.add("1588");
		sidList.add("1501");
		sidList.add("751");
		sidList.add("1670");
		sidList.add("1340");
		sidList.add("1666");
		sidList.add("1637");
		sidList.add("1634");
		sidList.add("1635");
		sidList.add("1636");
		sidList.add("1633");
		sidList.add("1699");
		sidList.add("1701");
		sidList.add("1623");
		sidList.add("3083");
		sidList.add("2199");
		sidList.add("685");
		sidList.add("669");
		sidList.add("680");
		sidList.add("1726");
		sidList.add("662");
		sidList.add("668");
		sidList.add("706");
		sidList.add("1097");
		sidList.add("2224");
		sidList.add("1192");
		sidList.add("1459");
		sidList.add("2229");
		sidList.add("1453");
		sidList.add("2223");
		sidList.add("2227");
		sidList.add("1199");
		sidList.add("1796");
		sidList.add("1795");
		sidList.add("1797");
		sidList.add("1794");
		sidList.add("1850");
		sidList.add("1857");
		sidList.add("1566");
		sidList.add("1901");
		sidList.add("1909");
		sidList.add("1556");
		sidList.add("1908");
		sidList.add("1903");
		sidList.add("1905");
		sidList.add("1906");
		sidList.add("1904");
		sidList.add("1907");
		sidList.add("1915");
		sidList.add("1913");
		sidList.add("957");
		sidList.add("923");
		sidList.add("951");
		sidList.add("928");
		sidList.add("2144");
		sidList.add("2142");
		sidList.add("2143");
		sidList.add("2146");
		sidList.add("2150");
		sidList.add("2154");
		sidList.add("2148");
		sidList.add("2147");
		sidList.add("1307");
		sidList.add("1150");
		sidList.add("1943");
		sidList.add("1944");
		sidList.add("1976");
		sidList.add("1981");
		sidList.add("1433");
		sidList.add("1982");
		sidList.add("2040");
		sidList.add("2041");
		sidList.add("2047");
		sidList.add("2042");
		sidList.add("1017");
		sidList.add("2045");
		sidList.add("2044");
		sidList.add("2039");
		sidList.add("2046");
		sidList.add("2038");
		sidList.add("644");
		sidList.add("977");
		sidList.add("989");
		sidList.add("1000");
		sidList.add("633");
		sidList.add("2062");
		sidList.add("2063");
		sidList.add("1001");
		sidList.add("1289");
		sidList.add("976");
		sidList.add("978");
		sidList.add("999");
		sidList.add("990");
		sidList.add("1755");
		sidList.add("1756");
		sidList.add("1757");
		sidList.add("2834");
		sidList.add("1761");
		sidList.add("1758");
		sidList.add("1759");
		sidList.add("2292");
		sidList.add("1499");
		sidList.add("2090");
		sidList.add("2091");
		sidList.add("2092");
		sidList.add("2277");
		sidList.add("2187");
		sidList.add("2184");
		sidList.add("2182");
		sidList.add("2261");
		sidList.add("2257");
		sidList.add("2260");
		sidList.add("2259");
		sidList.add("2258");
		sidList.add("2289");
		sidList.add("2078");
		sidList.add("2079");
		sidList.add("2077");
		sidList.add("2440");
		sidList.add("2442");
		sidList.add("2455");
		sidList.add("2375");
		sidList.add("2374");
		sidList.add("1432");
		sidList.add("1348");
		sidList.add("2505");
		sidList.add("2504");
		sidList.add("1469");
		sidList.add("1232");
		sidList.add("2559");
		sidList.add("2304");
		sidList.add("2401");
		sidList.add("2402");
		sidList.add("1847");
		sidList.add("1895");
		sidList.add("2135");
		sidList.add("2134");
		sidList.add("2133");
		sidList.add("1512");
		sidList.add("2452");
		sidList.add("1391");
		sidList.add("863");
		sidList.add("2255");
		sidList.add("1398");
		sidList.add("823");
		sidList.add("821");
		sidList.add("820");
		sidList.add("1549");
		sidList.add("636");
		sidList.add("740");
		sidList.add("1579");
		sidList.add("1077");
		sidList.add("1274");
		sidList.add("2887");
		sidList.add("2843");
		sidList.add("1244");
		sidList.add("2141");
		sidList.add("2293");
		sidList.add("1454");
		sidList.add("1724");
		sidList.add("1727");
		sidList.add("2337");
		sidList.add("1445");
		sidList.add("1284");
		sidList.add("383");
		sidList.add("1900");
		sidList.add("2188");
		sidList.add("1125");
		sidList.add("1167");
		sidList.add("674");
		sidList.add("1975");
		sidList.add("1854");
		sidList.add("1898");
		sidList.add("924");
		sidList.add("1184");
		sidList.add("2301");
		sidList.add("1700");
		sidList.add("1185");
		sidList.add("1697");
		sidList.add("1186");
		sidList.add("728");
		sidList.add("1967");
		sidList.add("2313");
		sidList.add("1586");
		sidList.add("2149");
		sidList.add("2302");
		sidList.add("683");
		sidList.add("801");
		sidList.add("2673");
		sidList.add("2676");
		sidList.add("2677");
		sidList.add("2454");
		sidList.add("2185");
		sidList.add("3047");
		sidList.add("2453");
		sidList.add("3091");
		sidList.add("2906");
		sidList.add("2914");
		sidList.add("2675");
		sidList.add("2670");
		sidList.add("2833");
		sidList.add("2819");
		sidList.add("1461");
		sidList.add("2351");
		sidList.add("2352");
		sidList.add("2353");
		sidList.add("1373");
		sidList.add("2537");
		sidList.add("2441");
		sidList.add("767");
		sidList.add("1328");
		sidList.add("2533");
		sidList.add("2531");
		sidList.add("2200");
		sidList.add("684");
		sidList.add("1409");
		sidList.add("2657");
		sidList.add("2222");
		sidList.add("2338");
		sidList.add("2346");
		sidList.add("2663");
		sidList.add("2354");
		sidList.add("2356");
		sidList.add("2357");
		sidList.add("1702");
		sidList.add("1354");
		sidList.add("2403");
		sidList.add("1792");
		sidList.add("2514");
		sidList.add("1593");
		sidList.add("1492");
		sidList.add("1523");
		sidList.add("2155");
		sidList.add("2837");
		sidList.add("2928");
		sidList.add("909");
		sidList.add("2888");
		sidList.add("2935");
		sidList.add("2838");
		sidList.add("2422");
		sidList.add("1902");
		sidList.add("2423");
		sidList.add("1911");
		sidList.add("1914");
		sidList.add("3111");
		sidList.add("2648");
		sidList.add("2679");
		sidList.add("2678");
		sidList.add("2927");
		sidList.add("1105");
		sidList.add("1159");
		sidList.add("1964");
		sidList.add("1157");
		sidList.add("2942");
		sidList.add("2512");
		sidList.add("2681");
		sidList.add("2682");
		sidList.add("2680");
		sidList.add("2946");
		sidList.add("2840");
		sidList.add("2821");
		sidList.add("2916");
		sidList.add("2820");
		sidList.add("2818");
		sidList.add("2081");
		sidList.add("2691");
		sidList.add("770");
		sidList.add("2641");
		sidList.add("2868");
		sidList.add("2835");
		sidList.add("2688");
		sidList.add("2376");
		sidList.add("2689");
		sidList.add("2577");
		sidList.add("2332");
		sidList.add("1667");
		sidList.add("2846");
		sidList.add("2565");
		sidList.add("2416");
		sidList.add("2418");
		sidList.add("2841");
		sidList.add("659");
		sidList.add("748");
		sidList.add("2310");
		sidList.add("721");
		sidList.add("2923");
		sidList.add("754");
		sidList.add("2420");
		sidList.add("2925");
		sidList.add("3041");
		sidList.add("2692");
		sidList.add("3087");
		sidList.add("2183");
		sidList.add("2309");
		sidList.add("2528");
		sidList.add("2527");
		sidList.add("1161");
		sidList.add("1855");
		sidList.add("2311");
		sidList.add("2839");
		sidList.add("2836");
		sidList.add("3116");
		sidList.add("2842");
		sidList.add("2451");
		sidList.add("2919");
		sidList.add("3096");
		sidList.add("2849");
		sidList.add("2494");
		sidList.add("3075");
		sidList.add("3127");
		sidList.add("3072");
		sidList.add("3095");
		sidList.add("1170");
		sidList.add("3192");
		sidList.add("3200");
		sidList.add("3155");
		sidList.add("1473");
		sidList.add("2497");
	}
	
}
